home *** CD-ROM | disk | FTP | other *** search
/ The Best of Down Under Games / The Best of Down Under Games.iso / 3dfx Screen Savers / Impact / IMPSRC.ZIP / THINGS.H < prev    next >
C/C++ Source or Header  |  1997-07-19  |  5KB  |  153 lines

  1. #ifndef _THINGS_H_
  2. #define _THINGS_H_
  3.  
  4. #include <glide.h>
  5. #include "math3d.h"
  6. #include "land.h"
  7.  
  8. #define setflag 1
  9. #define setuseinput 2
  10. #define setyaw 3
  11. #define setpitch 4
  12. #define setroll 5
  13. #define setx 6
  14. #define sety 7
  15. #define setz 8
  16. #define setlight 9
  17. #define setrad 10
  18. #define setdyaw 11
  19. #define setdpitch 12
  20. #define setdroll 13
  21. #define setmove 14
  22.  
  23. #define move_none 0
  24. #define move_fly 1
  25. #define move_roll 2
  26.  
  27.  
  28. typedef struct faces_t{
  29.     int *ndx;
  30.     int NumSides;
  31.     int Surf;
  32.     float *t,*s;
  33.     int texindx;
  34.     int surfclr;
  35. };
  36.  
  37. void FreeThing(entity_t &Entity);
  38. BOOL MyDrawTriangleTooClose(GrVertex bad1, GrVertex bad2,GrVertex bad3,
  39.                        GrVertex old1, GrVertex old2,GrVertex old3,
  40.                        Matrix rot,float x, float y, float z);
  41. short    BigShort (short l);
  42. short    LittleShort (short l);
  43. int        BigLong (int l);
  44. int        LittleLong (int l);
  45. float    BigFloat (float l);
  46. float    LittleFloat (float l);
  47.  
  48. typedef struct SURFS{
  49.     char *Name;
  50.     char r,g,b,a;
  51.     short Flags; //Bla It is there if we want it though.
  52.     short Lumi, Diff, Spec, Refl, Tran;
  53.     //Luminosity, (donno what to do with this.)
  54.     //Diffuse, ditto
  55.     //Specular, I'll have to find that one sometime.
  56.     //Reflection, only if we have CPU and polygons to burn.
  57.     //Transparency, 255 - Trans == Alpha.
  58.     short Glos;  //something about being glossy. 0 none, 1024 max.
  59.     //I'm defining somethings but not really so I know what they are later.
  60.     //char *RIMG;  //Reflection image file.
  61.     //float RSAN;  haha, mirror reflection angle! haha
  62.     //float FIND;  Refraction, haha, like I have time to figure that out too.
  63.     //float EDGE;  something about transpearency threshold.
  64.     //float SMAN;  This specifies smoothing angle threshold.
  65.     char *CTEX, *DTEX, *STEX, *RTEX, *TTEX, *BTEX;
  66.     //CTex, Color texture, what is the difference between this and TIMG?
  67.     //DTex, Diffuse texture. (I won't use it.)
  68.     //STex, Specular texture. (maybe, not with transperency.)
  69.     //RTex, Reflection texture. (I don't understand this one well, maybe variable reflection won't use)
  70.     //TTex, Transparency texture. Will probably use with color texture very much. (6 letters and a mip level pair)
  71.     //ie MyText00 biggest copy, MyText01 next largest ...
  72.     //BTex, Bump map.  won't use this either. (How?)
  73.     char *TIMG;     //This will be the texture map source.
  74.     //short TFLG;     //Not used.  Maybe antialiasing flag later.
  75.     POINT TSIZ, TCTR, TFAL, TVEL;//Texture info that I don't understand yet.
  76.     //char Tr, Tg, Tb, Tn;//TCLR thingy...  I think it modifies the channels.
  77.     short TVAL; //Modifies DTEX, STEX, RTEX, and TTEX...??
  78.     //short TAMP;  //Amplitude of bump map. . .
  79.  
  80.  
  81. };
  82.  
  83.  
  84. class entity_t{
  85.     //private:
  86.     public:
  87.     float ox,oy,oz;
  88.     float dx,dy,dz,redx,redy,redz;
  89.     float ax,ay,az,dyaw,dpitch,droll,ayaw,apitch,aroll,iyaw,ipitch,iroll;
  90.     int useinput;
  91.     double MyShootTime;
  92.     float zoomx,zoomy;
  93.     faces_t *Tris;
  94.     SURFS *Surfs;
  95.     int NumSurfs;
  96.     int NumTris;
  97.     int BoxX[2],BoxY[2],BoxZ[2];
  98.     Matrix RotA;
  99.     GrVertex *Verts;//,xVerts[26];
  100.     //public:
  101.     char *lwon;
  102.     int rad;
  103.     float yaw, pitch, roll;//yaw=xz, pitch=y offset from yaw, roll = rotational around the compound angle of yaw and pitch.
  104.     int flag;
  105.     entity_t *Owner,*Enemy;
  106.     int movetype;
  107.     int locid;
  108.     float lightr, lightg, lightb, lighta,lighth;
  109.     int light,die,nolight;
  110.     float x,y,z;
  111.     int NumVerts;
  112.     GrVertex *rVerts;//,xVerts[26];
  113.     light_t  *lit;
  114.     entity_t *prev;
  115.     entity_t *next;
  116.     //Functions:
  117.     entity_t(char *lwo);                //Just loads this lwo during startup.
  118.     entity_t();                         //Just sit there. probably camera.
  119.     entity_t(float ix,float iy,float iz);
  120.     entity_t(float ix,float iy,float iz, float idx, float idy, float idz);
  121.     entity_t(float ix,float iy,float iz, float idx, float idy, float idz, float iyaw, float ipitch, float iroll);
  122.     entity_t(char *lwo,float ix,float iy,float iz);
  123.     entity_t(char *lwo,float ix,float iy,float iz, float idx, float idy, float idz);
  124.     entity_t(char *lwo,float ix,float iy,float iz, float idx, float idy, float idz, float iyaw, float ipitch, float iroll);
  125.  
  126.  
  127.     void setit(int modify, float value);    //Set soemthing
  128.     void setsize(float lx, float ly, float lz, float hx, float hy, float hz);
  129.     void fov();                              //Set Field Of View
  130.     void LoadLWO(char *mlwo);                 //Reads a lwo that is new.
  131.     void PrintStats();                       //Prints coords and headings.
  132.     void lights(float Red, float Green, float Blue, float Alpha = 255,float hard = 2);
  133.     void entity_t::castlight(entity_t *Other);
  134.     double thinktime;                      //When to think the next thing.
  135.     int (*nextthink)();                 //What to do later.
  136.  
  137.     int move();                         //move my butt.
  138.  
  139.     void render(Matrix rotc);                           //Draw me.
  140.  
  141.     int CameraRender();                 //Render the world from this point.
  142.  
  143.     int collide(entity_t *Other);        //see if we hit this guy.
  144.     int collide(void);                  //see if we hit the ground.
  145.  
  146.     ~entity_t();                        //Destructor.  Free and die.
  147.  
  148.  
  149. };
  150.  
  151. extern entity_t Camera, *Self, *Other, *Head,*Tail;
  152.  
  153. #endif //Things.h